import type { Menu } from '@/types/user'
import { loadComponent } from './component'
import router from '@/router'

export const addDynamicRoutes = (menus: Menu[]) => {
  //1、遍历menus，再遍历里面每一项的children，给children每一项的里面的 component 动态加载它对应的页面
  menus.forEach(item => {
    if (item.children) {
      item.children.forEach(subMenu => {
        // 不能直接使用服务器返回的组件路径字符串，需要给他进行动态加载
        subMenu.component = loadComponent(subMenu.component)
      })
    }
  })

  // vue2添加动态路由的方法是 addRoutes
  // console.log('----menus---', menus)
  const oldRoutes = router.getRoutes()
  oldRoutes.forEach(route => {
    if (!route.meta.isStatic) {
      // 删除之前的动态路由
      router.removeRoute(route.name)
    }
  })

  menus.forEach(item => {
    // 添加到name=layout的路由规则里面，相当于添加的是嵌套路由
    router.addRoute('layout', item)
  })
}
